/*
 * @authors mail: eventosgasteiz@gmail.com
 * 		David Benito
 * 		Juan Lopez
 * 		Imanol Nieto
 * 		Araceli Alday
 * ----------------------------------------------------------------------
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version. 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
*/

package com.eventosgasteiz.views;

import java.util.Date;

import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.eventosgasteiz.R;
import com.eventosgasteiz.beans.Evento;
import com.eventosgasteiz.utils.LoadImageAsyncTask;
import com.eventosgasteiz.utils.LoadImageAsyncTask.LoadImageAsyncTaskResponder;

/**
 * Vista de los elementos de la lista de eventos.
 */
public class EventoListItem extends RelativeLayout implements LoadImageAsyncTaskResponder{
	
	private AsyncTask<String, Void, Bitmap> latestLoadTask;
	
	private ImageView i;
	private TextView name;
	private TextView fecha;
	private TextView lugar;
	private Evento e;
	private Context context;	

	/**
	 * Constructor
	 * @param context
	 * @param attrs
	 */
	public EventoListItem(Context context, AttributeSet attrs) {
		super(context, attrs);
		this.context=context;		
	}
	
	/**
	 * Situa los componentes en cada elemento 
	 */
	@Override
	protected void onFinishInflate() {
		super.onFinishInflate();
		i=(ImageView)findViewById(R.id.image1);
		name=(TextView)findViewById(R.id.nombre);
		fecha=(TextView)findViewById(R.id.fecha);
		lugar=(TextView)findViewById(R.id.lugar);
	}
	
	/**
	 * Coloca los datos en cada elemento
	 * @param Evento e
	 */
	public void setEvento(Evento e) {
		this.e = e;
		this.name.setText(e.getName());
		
		//Tratamiento de fechas
		String fIni = convertirFecha(e.getFecha_inicio());
		String fFin = convertirFecha(e.getFecha_fin());
		if(fIni.equalsIgnoreCase(fFin)){
			fecha.setText(fIni);
		} else {
			fecha.setText(fIni+ " - " + fFin);
		}
		
		this.lugar.setText(e.getLugar());			
		
		// cancel old task
	    if (null != latestLoadTask) {
	      latestLoadTask.cancel(true);
	    }	    
	    latestLoadTask = new LoadImageAsyncTask(this).execute(e.getPhotopath());	    
	}
	
	/**
	 * Convertir un campo fecha Date en String para mostrar en pantalla
	 * @param fecha Date
	 * @return String fecha en formato DD/MM/YYYY
	 */
	private String convertirFecha(Date fecha){
		StringBuffer sFecha = new StringBuffer();
		int dia = fecha.getDate();
		if (dia<10){
			sFecha.append("0");
		}
		sFecha.append(dia).append("/");
		int mes = fecha.getMonth()+1;
		if (mes<10){
			sFecha.append("0");
		}
		sFecha.append(mes).append("/");
		sFecha.append(fecha.getYear());
		return sFecha.toString();
	}
	
	/**
	 * Devuelve el evento
	 * @return Evento
	 */
	public Evento getE() {
		return e;
	}

	@Override
	public void imageLoading() {
		// TODO Auto-generated method stub
		i.setImageBitmap(null);
		
	}

	@Override
	public void imageLoadCancelled() {
		// TODO Auto-generated method stub
		//do nothing
		
	}

	@Override
	public void imageLoaded(Bitmap bitmap) {
		// TODO Auto-generated method stub	
		if (bitmap != null){
			i.setImageBitmap(bitmap);
		} else {
			i.setImageResource(R.drawable.ic_launcher);
		}
		
	}

}
